/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package command.implementacoes;

import command.interfaces.Carta;
import java.text.DecimalFormat;
import model.Jogador;
import servidorRMI.AddObservadorImp;
import servidorRMI.VerificaFalencia;

/**
 *
 * @author Lucas
 * Classe que efetua um dividendo...
 */
public class Dividendo implements Carta {

    private double valor;
    private String descricao;

    public Dividendo(double valor, String str) {
        this.valor = valor;
        this.descricao = str;
    }

    @Override
    public void execute(Jogador j) {
        if (j.getMoney() >= valor) {
            j.setMoney(j.getMoney() - valor);
            DecimalFormat df = new DecimalFormat("0.00");
            AddObservadorImp.getInstancia().notificarMensagem(j.getName(),
                    "CARTA: "
                    + descricao + " Perca R$: "
                    + df.format(valor)
                    + "!");
        } else {
            if (j.getListaCampos().isEmpty()) {//Caso o jogador não possua mais bens para vender
                j.falido();
                AddObservadorImp.getInstancia().notificarMensagem(j.getName(),
                        "Você está falido!");
            } else { //Verifica se o jogador possui bens e faz a venda para o banco
                VerificaFalencia vf = new VerificaFalencia();
                vf.setJogador(j);
                if (vf.venderCompanias()) {
                    execute(j);
                } else if (vf.venderTerrenos()) {
                    execute(j);
                }
            }
        }
    }

    public String getDescricao() {
        return descricao;
    }
}
